/*
 * Copyright (c) 2007 Norman Brandinger <norm@goes.com>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

/*
 * Generated by asn1c-0.9.22 (http://lionet.info/asn1c)
 * From ASN.1 module "T1S1-LAES-VoP-Abstract-Syntax-Module"
 * 	found in "T1S1-LAES-VoP-Abstract-Syntax-Module.asn"
 * 	`asn1c -funnamed-unions -findirect-choice -fbless-SIZE -fcompound-names -fnative-types`
 */

#ifndef	_ProtocolSpecificParameters_H_
#define	_ProtocolSpecificParameters_H_


#include <asn_application.h>

/* Including external dependencies */
#include "SipHeader.h"
#include <asn_SET_OF.h>
#include <constr_SET_OF.h>
#include <OCTET_STRING.h>
#include <constr_SEQUENCE.h>
#include <constr_SET.h>
#include "H225CallSignaling.h"
#include "H245.h"
#include <constr_CHOICE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum ProtocolSpecificParameters_PR {
	ProtocolSpecificParameters_PR_NOTHING,	/* No components present */
	ProtocolSpecificParameters_PR_sip,
	ProtocolSpecificParameters_PR_h323
} ProtocolSpecificParameters_PR;

/*
 * Method of determining the components presence
 */
typedef enum ProtocolSpecificParameters__sip_PR {
	ProtocolSpecificParameters__sip_PR_sipHeader,	/* Member sipHeader is present */
	ProtocolSpecificParameters__sip_PR_sipBody,	/* Member sipBody is present */
} ProtocolSpecificParameters__sip_PR;

/*
 * Method of determining the components presence
 */
typedef enum ProtocolSpecificParameters__h323_PR {
	ProtocolSpecificParameters__h323_PR_h225RAS,	/* Member h225RAS is present */
	ProtocolSpecificParameters__h323_PR_h225CS,	/* Member h225CS is present */
	ProtocolSpecificParameters__h323_PR_h245,	/* Member h245 is present */
} ProtocolSpecificParameters__h323_PR;

/* Forward declarations */
struct H225RAS;

/* ProtocolSpecificParameters */
typedef struct ProtocolSpecificParameters {
	ProtocolSpecificParameters_PR present;
	union {
		struct ProtocolSpecificParameters__sip {
			struct ProtocolSpecificParameters__sip__sipHeader {
				A_SET_OF(SipHeader_t) list;
				
				/* Context for parsing across buffer boundaries */
				asn_struct_ctx_t _asn_ctx;
			} *sipHeader;
			struct ProtocolSpecificParameters__sip__sipBody {
				struct ProtocolSpecificParameters__sip__sipBody__sipBodyHeader {
					A_SET_OF(SipHeader_t) list;
					
					/* Context for parsing across buffer boundaries */
					asn_struct_ctx_t _asn_ctx;
				} sipBodyHeader;
				OCTET_STRING_t	 sipBodyContents;
				
				/* Context for parsing across buffer boundaries */
				asn_struct_ctx_t _asn_ctx;
			} *sipBody;
			
			/* Presence bitmask: ASN_SET_ISPRESENT(psip, sip_PR_x) */
			unsigned int _presence_map
				[((2+(8*sizeof(unsigned int))-1)/(8*sizeof(unsigned int)))];
			
			/* Context for parsing across buffer boundaries */
			asn_struct_ctx_t _asn_ctx;
		} *sip;
		struct ProtocolSpecificParameters__h323 {
			struct ProtocolSpecificParameters__h323__h225RAS {
				A_SET_OF(struct H225RAS) list;
				
				/* Context for parsing across buffer boundaries */
				asn_struct_ctx_t _asn_ctx;
			} *h225RAS;
			struct ProtocolSpecificParameters__h323__h225CS {
				A_SET_OF(H225CallSignaling_t) list;
				
				/* Context for parsing across buffer boundaries */
				asn_struct_ctx_t _asn_ctx;
			} *h225CS;
			struct ProtocolSpecificParameters__h323__h245 {
				A_SET_OF(H245_t) list;
				
				/* Context for parsing across buffer boundaries */
				asn_struct_ctx_t _asn_ctx;
			} *h245;
			
			/* Presence bitmask: ASN_SET_ISPRESENT(ph323, h323_PR_x) */
			unsigned int _presence_map
				[((3+(8*sizeof(unsigned int))-1)/(8*sizeof(unsigned int)))];
			
			/* Context for parsing across buffer boundaries */
			asn_struct_ctx_t _asn_ctx;
		} *h323;
	};
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ProtocolSpecificParameters_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_ProtocolSpecificParameters;

#ifdef __cplusplus
}
#endif

/* Referred external types */
#include "H225RAS.h"

#endif	/* _ProtocolSpecificParameters_H_ */
